package com.oristand.sqlmonitor.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

/**
 * TODO
 *
 * @author wangmeng
 * @since 2023/7/7
 */
@Slf4j
public class DynamicDataSourceUtil {


    // 对当前线程的操作-线程安全的
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();

    // 调用此方法，切换数据源
    public static void setDataSource(String dataSource) {
        contextHolder.set(dataSource);
        log.info("已切换到数据源:{}", dataSource);
    }

    // 获取数据源
    public static String getDataSource() {
        return contextHolder.get();
    }

    // 删除数据源
    public static void clearDataSource() {
        contextHolder.remove();
        //互换primary的数据源
        log.info("已切换到主数据源");
    }


    private static final String JDBC_URL_ARGS = "?useUnicode=true&characterEncoding=UTF-8&useSSL=false";

    /**
     * 拼接完整的JDBC URL
     */
    public static String getJDBCUrl(String baseUrl) {
        if (!StringUtils.hasText(baseUrl)) {
            return null;
        }
        return baseUrl + JDBC_URL_ARGS;
    }

}
